package com.aust.reflect;

import java.lang.reflect.Method;

public class Reflect7 {
    public static void main(String[] args) throws Exception {
        Class<Student> studentClass = Student.class;
        Student student = new Student();

        /**
         * 每一个 `Method` 对象代表一个类中的一个方法（不包括构造器和字段）。
         */

        /**
         * public
         */
        Method setName = studentClass.getMethod("setName", String.class);
        Method getName = studentClass.getMethod("getName");
        setName.invoke(student, "tangruojie");
        System.out.println(getName.invoke(student));

        /**
         * private
         * 对对象操作之前取消权限限制
         */
        Method setAge = studentClass.getDeclaredMethod("setAge", int.class);
        setAge.setAccessible(true);
        setAge.invoke(student, 18);
        Method getAge = studentClass.getDeclaredMethod("getAge");
        getAge.setAccessible(true);
        System.out.println(getAge.invoke(student));

    }
}
